package presentacion;

import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.BorderLayout;

import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.ParseException;
import java.util.List;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;

import dominio.Tren;
import dominio.Viaje;

public class Nuevo_Viaje {

	JFrame VentanaNuevoViaje;
	private JPanel panel;
	private JButton btnAtras;
	private JLabel lblIdentificador;
	private JLabel lblOrigen;
	private JLabel lblDestino;
	private JLabel lblSalida;
	private JLabel lblLlegada;
	private JLabel lblFecha;
	private JLabel lblTren;
	 JTextField txtId;
	 JTextField txtOrigen;
	 JTextField txtDestino;
	 JComboBox cBTren;
	 JButton btnAnadir;
	JFormattedTextField ftxtSalida;
	JFormattedTextField ftxtLlegada;
	private JFormattedTextField ftxtFecha;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args)  {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Nuevo_Viaje window = new Nuevo_Viaje();
					window.VentanaNuevoViaje.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 * @throws Exception 
	 */
	public Nuevo_Viaje() throws Exception {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 * @throws Exception 
	 */
	private void initialize() throws Exception {
		VentanaNuevoViaje = new JFrame();
		VentanaNuevoViaje.setResizable(false);
		VentanaNuevoViaje.setVisible(true);
		VentanaNuevoViaje.setTitle("A\u00F1adir nuevo viaje");
		VentanaNuevoViaje.setBounds(100, 100, 451, 186);
		VentanaNuevoViaje.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		{
			panel = new JPanel();
			VentanaNuevoViaje.getContentPane().add(panel, BorderLayout.CENTER);
			panel.setLayout(null);
			{
				btnAtras = new JButton("Atr\u00E1s");
				btnAtras.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
					
						Viajes v = null;
						try {
							v = new Viajes();
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						v.VentanaViaje.setVisible(true);
						v.listaViajes.removeAll();
						
						VentanaNuevoViaje.setVisible(false);
					}
				});
				btnAtras.setBounds(323, 112, 97, 25);
				panel.add(btnAtras);
			}
			{
				lblIdentificador = new JLabel("Identificador:");
				lblIdentificador.setBounds(12, 13, 84, 16);
				panel.add(lblIdentificador);
			}
			{
				lblOrigen = new JLabel("Origen:");
				lblOrigen.setBounds(12, 42, 56, 16);
				panel.add(lblOrigen);
			}
			{
				lblDestino = new JLabel("Destino:");
				lblDestino.setBounds(221, 45, 56, 16);
				panel.add(lblDestino);
			}
			{
				lblSalida = new JLabel("Salida:");
				lblSalida.setBounds(231, 71, 56, 16);
				panel.add(lblSalida);
			}
			{
				lblLlegada = new JLabel("Llegada:");
				lblLlegada.setBounds(320, 71, 56, 16);
				panel.add(lblLlegada);
			}
			{
				lblFecha = new JLabel("Fecha:");
				lblFecha.setBounds(12, 71, 56, 16);
				panel.add(lblFecha);
			}
			{
				lblTren = new JLabel("Tren:");
				lblTren.setBounds(12, 100, 44, 16);
				panel.add(lblTren);
			}
			{
				txtId = new JTextField();
				txtId.setBounds(88, 10, 116, 22);
				panel.add(txtId);
				txtId.setColumns(10);
				txtId.addFocusListener(new MiFocusListener());
			}
			{
				txtOrigen = new JTextField();
				txtOrigen.setBounds(58, 42, 116, 22);
				panel.add(txtOrigen);
				txtOrigen.setColumns(10);
				txtOrigen.addFocusListener(new MiFocusListener());
			}
			{
				txtDestino = new JTextField();
				txtDestino.setBounds(271, 42, 149, 22);
				panel.add(txtDestino);
				txtDestino.setColumns(10);
				txtDestino.addFocusListener(new MiFocusListener());
			}
			{
				cBTren = new JComboBox();
				cBTren.setBounds(58, 97, 110, 22);
				panel.add(cBTren);
				
				
				
				
				Tren t = new Tren(null, null);
				List<Tren> lisT=t.leerTodos();
				for (int i = 0; i < lisT.size(); i++) {
					cBTren.addItem(lisT.get(i).getMatricula());
				}
				
			}
			{
				btnAnadir = new JButton("A\u00F1adir");
				btnAnadir.setBounds(214, 112, 97, 25);
				panel.add(btnAnadir);
				btnAnadir.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					try {
						Viaje v=new Viaje(Integer.parseInt(txtId.getText()),txtOrigen.getText(),txtDestino.getText(),ftxtSalida.getText(),ftxtLlegada.getText(),new Tren((String)cBTren.getSelectedItem(),null),ftxtFecha.getText());
						if(v.insertar()==1){
							JOptionPane.showMessageDialog(VentanaNuevoViaje,
									"Viaje insertado correctamente.","Viaje insertado",JOptionPane.INFORMATION_MESSAGE);
							VentanaNuevoViaje.setVisible(false);
							Viajes.VentanaViaje.setVisible(true);
							Viajes.actualizarLista();
						}else{
							JOptionPane.showMessageDialog(VentanaNuevoViaje,
									"Viaje no insertado.","Aviso",JOptionPane.ERROR_MESSAGE);
						}
					} catch (NumberFormatException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
						JOptionPane.showMessageDialog(VentanaNuevoViaje,
								"Viaje no insertado.");
					}
					}
				});
				
				
			}
			{
				MaskFormatter formatoSalida;
				try {
					formatoSalida = new MaskFormatter("##:##");
					formatoSalida.setPlaceholderCharacter('-');
					ftxtSalida = new JFormattedTextField(formatoSalida);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}ftxtSalida.setBounds(271, 68, 42, 22);
				panel.add(ftxtSalida);
				ftxtSalida.addFocusListener(new MiFocusListener());
			}
			{
				MaskFormatter formatoLlegada;
				try {
					formatoLlegada = new MaskFormatter("##:##");
					formatoLlegada.setPlaceholderCharacter('-');
					ftxtLlegada = new JFormattedTextField(formatoLlegada);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}ftxtLlegada.setBounds(370, 68, 50, 22);
				panel.add(ftxtLlegada);
				{
					MaskFormatter formatoFecha;
					try {
						formatoFecha = new MaskFormatter("##/##/####");
						formatoFecha.setPlaceholderCharacter('-');
						ftxtFecha = new JFormattedTextField(formatoFecha);
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}ftxtFecha.setBounds(58, 69, 116, 20);
					panel.add(ftxtFecha);
				}
				ftxtLlegada.addFocusListener(new MiFocusListener());
			}
		}
	}

	private class MiFocusListener extends FocusAdapter {
		@Override
		public void focusGained(FocusEvent e) {
			e.getComponent().setBackground(new Color(250, 250, 210));
		}

		@Override
		public void focusLost(FocusEvent e) {
			e.getComponent().setBackground(new Color(250, 250, 250));
		}
	}
	public void actualizarCampos(int id) throws Exception{
		Viaje v=new Viaje(id,null,null,null,null,null,null);
		v.leerViaje();
		txtId.setText(Integer.toString(v.getId()));
		txtOrigen.setText(v.getOrigen());
		txtDestino.setText(v.getDestino());
		ftxtFecha.setText(v.getFecha());
		ftxtSalida.setText(v.getHora_salida());
		ftxtLlegada.setText(v.getHora_llegada());
		cBTren.setSelectedItem(v.getTren());	
	}
	
	public void limpiarCampos(){
		txtId.setText("");
		txtOrigen.setText("");
		txtDestino.setText("");
		ftxtFecha.setText("");
		ftxtSalida.setText("");
		ftxtLlegada.setText("");
		cBTren.setSelectedItem("");
	}

}